/**
 * @author 20111011 by hzx
 * @class UserInfoSmsForm
 * @extends Ext.form.FormPanel
 * @description 用户信息表单
 */
UserInfoSmsForm = Ext.extend(Ext.form.FormPanel, {
	myid : "myid",
	cur_user_type : "user_type",
	cur_check_flag:"check_flag" , 
	cur_fee_type:"fee_type" , 
	cur_record_flag:"record_flag",
	cur_recv_flag:"recv_flag",
	myReadOnly : false, // 自定义属性是否只读
	myDisabled : false, // 自定义属性是否禁用
	//upLoadFileWin : null, // 照片上传窗体
	comboStoreUt : null, // 下拉列表框数据源(用户类型)
	comboStoreSex : null, // 下拉列表框数据源(性别)
	comboStoreLy : null, // 下拉列表框数据源(路由)
	comboStoreSh : null, // 下拉列表框数据源(是否需要审核)
	comboStoreSf : null, // 下拉列表框数据源(收费方式)
	comboStoreTrue : null, // 下拉列表框数据源(True)
	comboStoreRf : null, // 下拉列表框数据源(是否显示接收的信息)
	comboStoreDf : null, // 下拉列表框数据源(是否自动扣量)
	// 构造方法
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);
		// 照片上传窗体	
		// this.upLoadFileWin = new UpLoadFileWindow();
		
		// 下拉列表框数据源(用户类型)
		this.comboStoreUt = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "user_type"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : false
				});
		// 下拉列表框数据源(性别)
		this.comboStoreSex = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "sex"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : true
				});
		// 下拉列表框数据源(路由ID)
		this.comboStoreLy = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "route"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : true
				});
//		// 下拉列表框数据源(路由ID)
//		this.comboStoreLy = new Ext.data.JsonStore({
//			url : "route.do",
//			baseParams : {
//			"operator" : "showAllRouteByPage",
//			"start" : "0",
//			"limit" : "1000"
//		},
//		fields : ["id","routeName"],
//		autoLoad : true
//		});
		// 下拉列表框数据源(审核)
		this.comboStoreSh = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "check_flag"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : true
				});
		// 下拉列表框数据源(收费模式)
		this.comboStoreSf = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "fee_mode"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : true
				});
		// 下拉列表框数据源(True)
		this.comboStoreTrue = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "true"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : true
				});
		// 下拉列表框数据源(是否显示接收的信息)
		this.comboStoreRf = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "recv_flag"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : true
				});
		
		// 下拉列表框数据源(是否自动扣量)discount_flag
		this.comboStoreDf = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "discount_flag"
					},
					fields : ["id", "value","remark"],
					autoLoad : true
				});
		
		// 拷贝父类的构造方法到当前对象
		UserInfoSmsForm.superclass.constructor.call(this, {
			id : this.myid,
			border : false, // 不要边框
			fileUpload : true, // 允许上传
			autoScroll : true,
			bodyStyle : "backgroundColor:#DFE8F6;",
			items : [{
				xtype : "panel",
				frame : true,
				border : false,
				bodyStyle : "backgroundColor:#DFE8F6;",
				items : [{
					layout : "column",
					border : false,
					items : [{
								columnWidth : .33,
								labelWidth : 110,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "80%"
								},
								items : [{
											fieldLabel : "登录ID*",
											name : "uis.userId",
											invalidText : "请输入小于等于30位的用户名",
											validator : function(){
												return this.getValue().length <= 30 ;
											}
										},{
											fieldLabel : "密码*",
											inputType : "password",
											name : "userPass1",
											allowBlank : false, // 不允许为空
											maxLength : 32
										},{
											fieldLabel : "确认密码*",
											inputType : "password",
											name : "uis.password",
											invalidText : "两次输入的密码不一致", // 验证失败出现的提示
											allowBlank : false, // 不允许为空
											validator : function() { // 验证
													var _pwd1 = this.ownerCt.items.itemAt(1).getValue(1);
													var _pwd2 = this.getValue();
													return _pwd2.length <= 32 && _pwd1 == _pwd2;
											},
											maxLength : 32
										},{
											id : "combo_ly",
											allowBlank : true, // 允许为空
											validator : function(){
												return (this.getValue() != null && this.getValue().length != "") || this.cur_user_type =='2';
											},
											xtype : "combo",
											editable : false,
											fieldLabel : "路由*",
											emptyText : "请选择路由", // 为空显示信息
											readOnly : this.myReadOnly, // 自定义属性(是否只读)
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											hiddenName : "uis.routeId",
											triggerAction : "all", // 显示所有数据
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreLy,
											invalidText :"必须选择其一"
										}, {
											fieldLabel : "手机*",
											name : "uis.cellphone",
											invalidText : "手机长度不对(请注意全角半角字符)",
											validator : function() {
											 	return /^1\d{10}$/gi.test(this.getValue());
											}
										},{
											id : "combo_sf",
											validator : function(){
												return this.getValue().trim() != "" || this.cur_user_type =='2';
											},
											xtype : "combo",
											editable : false,
											fieldLabel : "收费方式*",
											emptyText : "请选择", // 为空显示信息
											hiddenName : "uis.feetype",
											triggerAction : "all", // 显示所有数据
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreSf,
											invalidText :"必须选择其一"
										},{
											id : "combo_rf",
											allowBlank : true, // 允许为空
											validator : function(){
												return this.getValue().trim() != "" || this.cur_user_type =='2';
											},
											xtype : "combo",
											editable : false,
											fieldLabel : "接收的信息*",
											emptyText : "请选择是否显示接收的信息", // 为空显示信息
											hiddenName : "uis.recvFlag",
											triggerAction : "all", // 显示所有数据
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreRf,
											invalidText :"必须选择其一"
										},{
											frame : true,
											allowBlank : true, // 允许为空
											xtype : "textfield",
											name : "uis.discount",
											fieldLabel : "自动扣量区域",
											invalidText :"格式有误,例如：10%~20%;70%~80%;",
											validator : function(){
												if(this.getValue() == ""){ //如果填写空则不自动扣量
													return true;
												}
												if (/^((\d{1,3}%)~(\d{1,3}%);)+$/gi.test(this.getValue())){ //校验两个值的大小
													return true;
//													tstr = this.getValue().split(';');
//													for(var i=0;i<tstr.length;i++){
//														if (tstr.length == 1){
//															tstr =this.getValue().split(',')
//														}
//														if(tstr.length != 2){
//															return false;
//														}
//														a = parseInt(tstr[0]);
//														b = parseInt(tstr[1]);
//													}
//													
//													return a<=100 && b <= 100 && a <= b;
												}
												return false;
											},
											hidden : this.cur_user_type =='2'
										},{
											allowBlank : true, //允许为空
											fieldLabel : "地址",
											name : "uis.address"
										}]
							}, {
								columnWidth : .33,
								labelWidth : 110,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "80%"
								},
								items : [{
											fieldLabel : "姓名*",
											name : "uis.userName",
											invalidText : "请输入小于30位的用户姓名",
											validator : function(){
												return this.getValue().length < 30 ;
											}
										},/* {
											id : "combo_ut",
											xtype : "combo", // 下拉列表框
											editable : false,
											fieldLabel : "用户类型*",
											emptyText : "请选择用户类型",
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											triggerAction : "all", // 显示所有数据
											hiddenName : "uis.userType",
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreUt,
											invalidText :"必须选择其一",
											allowBlank : true, // 允许为空
											validator : function(){
												return this.getValue().trim() != "" || this.cur_user_type =='2';
											}
										} */  
										{
											xtype : "radiogroup",
											fieldLabel : "用户类型*",
											name : "uis.userType",
											columns:2,  //指定分为2列  
											vertical:true,  //指定是否垂直排序  
											allowBlank : false,
											items:[   
											    //boxLabel是要显示的值,inputValue是要提交的值  
											   {boxLabel:"管理员",name:"uis.userType",inputValue:"1"},  
											   {boxLabel:"代理用户",name:"uis.userType",inputValue:"2"}
											],
											value : "2",
											validator :function(){
												return true;
											}
										}
										, {
											id : "combo_sh",
											validator : function(){
												return this.getValue().trim() != "" || this.cur_user_type =='2';
											},
											xtype : "combo",
											editable : false,
											fieldLabel : "需要审核*",
											emptyText : "请选择是否需要审核", // 为空显示信息
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											hiddenName : "uis.checkFlag",
											triggerAction : "all", // 显示所有数据
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreSh,
											invalidText :"必须选择其一"
										},{
											allowBlank : true, // 允许为空
											fieldLabel : "电话",
											name : "uis.telephone"
										},{
											id : "combo_sex",
											allowBlank : true, // 允许为空
											validator : function(){
												return this.getValue().trim() != "";
											},
											xtype : "combo", // 下拉列表框
											editable : false,
											fieldLabel : "性别*",
											emptyText : "请选择性别",
											readOnly : this.myReadOnly, // 自定义属性(是否只读)
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											edittable : false,
											triggerAction : "all", // 显示所有数据
											hiddenName : "uis.sex",
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreSex,
											invalidText :"必须选择其一"
										},{
											allowBlank : true,
											fieldLabel : "电子邮件",
											name : "uis.email",
											invalidText : "请输入小于等于50位的电子邮件",
											validator : function(){
												return this.getValue().length <= 50 ;
											}
										},{
											id : "combo_true",
											allowBlank : true, // 允许为空
											validator : function(){
												return this.getValue().trim() != "" || this.cur_user_type =='2';
											},
											xtype : "combo",
											editable : false,
											fieldLabel : "是否显示真实数据*",
											emptyText : "请选择", // 为空显示信息
											hiddenName : "uis.recordFlag",
											triggerAction : "all", // 显示所有数据
											displayField : "remark", // 要显示的值
											valueField : "value",
											store : this.comboStoreTrue,
											invalidText :"必须选择其一"
										},{
											frame : true,
											allowBlank : true, // 允许为空
											xtype : "textfield",
											name : "uis.remark",
											fieldLabel : "备注",
											invalidText : "请输入小于等于100位的备注",
											validator : function(){
												return this.getValue().length <= 100 ;
											}
										}]
							}]
					}]
			}]
		});
		
		/* this.comboStoreUt.on('load',function(store,record,opts){  
		    var combo = Ext.getCmp("combo_ut");  
	        var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
		    //firstValue  = record[0].data.value;//这种方法也可以获得第一项的值  
		    combo.setValue(firstValue);//选中  
		    //alert("value="+combo.getValue());//查看选中的value  
		    //alert("text="+combo.getRawValue());//查看选中的文本  
	    }); */
		this.comboStoreSex.on('load',function(store,record,opts){  
			var combo = Ext.getCmp("combo_sex");  
			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
			combo.setValue(firstValue);//选中  
		});
		this.comboStoreLy.on('load',function(store,record,opts){  
			var combo = Ext.getCmp("combo_ly");  
			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
			combo.setValue(firstValue == null || firstValue=="" ? 1 : firstValue);//选中  
		});
		this.comboStoreSh.on('load',function(store,record,opts){  
			var combo = Ext.getCmp("combo_sh");  
			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
			combo.setValue(firstValue);//选中  
		});
		this.comboStoreSf.on('load',function(store,record,opts){  
			var combo = Ext.getCmp("combo_sf");  
			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
			combo.setValue(firstValue);//选中  
		});
		this.comboStoreTrue.on('load',function(store,record,opts){  
			var combo = Ext.getCmp("combo_true");  
			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
			combo.setValue(firstValue);//选中  
		});
		this.comboStoreRf.on('load',function(store,record,opts){  
			var combo = Ext.getCmp("combo_rf");  
			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
			combo.setValue(firstValue);//选中  
		});
//		this.comboStoreDf.on('load',function(store,record,opts){  
//			var combo = Ext.getCmp("combo_df");  
//			var firstValue = store.getRange()[0].data.value;//这种方法可以获得第一项的值  
//			combo.setValue(firstValue);//选中  
//		});
	},
	/**
	 * 用户角色表单提交方法
	 * 
	 * @param {}
	 *            _url 提交的url
	 */
	mySubmit : function(_url) {
		this.getForm().submit({
					url : _url,
					waitTitle : "数据传输",
					waitMsg : "数据传输中,请稍等...",
					// 成功回调方法
					success : this.onSuccess,
					// 失败回调方法
					failure : this.onFailure,
					// 作用域
					scope : this

				})
	},

	/**
	 * 请求成功的回调方法
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onSuccess : function(_form, _action) {
		if (_action.result.success == true) {
			// 调用当前组建的父容器的onCloseWinClick()事件
			this.ownerCt.onCloseWinClick();
			/**
			 * _urgp 是 hrmfactory.userrole.userRole.jsp
			 * 中UserRoleGridPanel类的实例
			 */
			_urgp.getStore().reload();
		}
	},

	/**
	 * 请求失败的回调方法
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onFailure : function(_form, _action) {
		Ext.Msg.alert("系统消息", _action.result["errorMsg"]);
	},

	/**
	 * 获取form的值
	 * 
	 * @return {}
	 */
	getFormValues : function() {
		return new Ext.data.Record(this.getForm().getValues());
	},

	/**
	 * 给表单设置值
	 * 
	 * @param {}
	 *            _record
	 */
	setFormValues : function(_record) {
		this.getForm().loadRecord(_record);
	},

	/**
	 * 重置表单
	 */
	reset : function() {
		this.getForm().reset();
	}
});
